import "package:hinge/store/encyclopedia_store.dart";
import "package:hinge/store/main_store.dart";
import "package:hinge/store/recommend_store.dart";
import "package:hinge/store/note_store.dart";
import "package:hinge/store/message_store.dart";
import "package:hinge/store/detail_store.dart";
import "package:hinge/store/personal_store.dart";
import "package:hinge/store/setup_store.dart";
import "package:hinge/store/topic_store.dart";
import "package:hinge/store/chat_store.dart";
import "package:hinge/store/chat_list_store.dart";

/// 根存储，用于在整个应用程序中共享状态
class RootStore {
  // 单例实例
  static final RootStore _instance = RootStore._internal();

  // 工厂构造函数，返回单例实例
  factory RootStore() {
    return _instance;
  }

  // 私有构造函数，确保只能通过工厂构造函数创建实例
  RootStore._internal();

  // 使用 getter 延迟初始化，避免循环依赖
  MainStore? _mainStore;
  RecommendStore? _recommendStore;
  NoteStore? _noteStore;
  MessageStore? _messageStore;
  EncyclopediaStore? _encyclopediaStore;
  DetailStore? _detailStore;
  PersonalStore? _personalStore;
  SetupStore? _setupStore;
  TopicStore? _topicStore;
  ChatStore? _chatStore;
  ChatListStore? _chatListStore;

  // 属性 getter，延迟初始化
  MainStore get mainStore => _mainStore ??= MainStore();
  RecommendStore get recommendStore => _recommendStore ??= RecommendStore();
  NoteStore get noteStore => _noteStore ??= NoteStore();
  MessageStore get messageStore => _messageStore ??= MessageStore();
  EncyclopediaStore get encyclopediaStore =>
      _encyclopediaStore ??= EncyclopediaStore();
  DetailStore get detailStore => _detailStore ??= DetailStore();
  PersonalStore get personalStore => _personalStore ??= PersonalStore();
  SetupStore get setupStore => _setupStore ??= SetupStore();
  TopicStore get topicStore => _topicStore ??= TopicStore();
  ChatStore get chatStore => _chatStore ??= ChatStore();
  ChatListStore get chatListStore => _chatListStore ??= ChatListStore();
}
